package vip.xiaonuo.modular.cms.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.boot.Banner;
import vip.xiaonuo.core.pojo.page.PageResult;
import vip.xiaonuo.modular.cms.entity.*;
import vip.xiaonuo.modular.cms.vo.ArticleVO;
import vip.xiaonuo.modular.cms.vo.PageVO;
import vip.xiaonuo.modular.cms.vo.ProductVO;

import java.util.List;

/**
 * @ProjectName: Hitech_CMS
 * @Package: vip.xiaonuo.modular.cms.service
 * @ClassName: PublicApiService
 * @Author: liubaihan
 * @Description: CMS开发API接口
 * @Date: 2021/8/23 14:22
 */

public interface PublicApiService {

/**************************************************************************** 栏目接口 *****************************************************************/
    /**
     * 获取栏目列表信息
     *
     * @return: java.util.List<vip.xiaonuo.modular.cms.entity.Catalog>
     * @author: liubaihan
     * @date: 2021/8/23 14:29
     */
    public List<Catalog> getCatalogInfo();

    /**
     * 通过栏目ID获取子菜单信息
     *
     * @param id: 栏目ID
     * @return: java.util.List<vip.xiaonuo.modular.cms.entity.Catalog>
     * @author: liubaihan
     * @date: 2022/9/14 17:04
     */
    public List<Catalog> getCatalogChildrenById(String id);


/**************************************************************************** 文章接口 *****************************************************************/
    /**
     * 根据栏目查询文章信息
     *
     * @param id: 栏目ID
     * @return: java.util.List<vip.xiaonuo.modular.cms.entity.Article>
     * @author: liubaihan
     * @date: 2021/8/23 14:30
     */
    public ArticleVO getArticleInfoByCatalog(String id);


    /**
     * 获取文本内容信息
     *
     * @param id: 文章或页面产品的ID
     * @return: vip.xiaonuo.modular.cms.entity.ArticleContent
     * @author: liubaihan
     * @date: 2021/8/23 14:40
     */
    public ArticleContent getArticleContentByArticleId(String id);

    /**
     * 通过栏目ID 分页查询文章
     *
     * @param pageNum: 页码
     * @param pageSize: 条数
     * @param searchText: 搜索文本
     * @param catalogId: 栏目Id
     * @return: com.baomidou.mybatisplus.extension.plugins.pagination.Page<vip.xiaonuo.modular.cms.vo.ArticleVO>
     * @author: liubaihan
     * @date: 2022/9/16 13:54
     */
    Page<ArticleVO> getArticlePageList(Integer pageNum, Integer pageSize, String searchText,String catalogId);

    /**
     * 通过文章ID 获取文章信息
     *
     * @param id: 文章ID
     * @return: vip.xiaonuo.modular.cms.vo.ArticleVO
     * @author: liubaihan
     * @date: 2022/10/13 15:17
     */
    public ArticleVO getArticleInfoById(String id);
    
/**************************************************************************** 产品接口 *****************************************************************/
    /**
     * 获取产品信息
     *
     * @param id: 栏目ID
     * @return: vip.xiaonuo.modular.cms.vo.ProductVO
     * @author: liubaihan
     * @date: 2022/9/16 14:47
     */
    public ProductVO getProductInfoByCatalog(String id);

    /**
     * 获取产品内容信息
     *
     * @param id: 产品ID
     * @return: vip.xiaonuo.modular.cms.entity.ArticleContent
     * @author: liubaihan
     * @date: 2022/9/16 14:50
     */
    public ArticleContent getProductContentByProductId(String id);

    /**
     * 通过栏目ID 产品查询文章
     *
     * @param pageNum: 页码
     * @param pageSize: 条数
     * @param searchText: 搜索文本
     * @param catalogId: 栏目ID
     * @return: com.baomidou.mybatisplus.extension.plugins.pagination.Page<vip.xiaonuo.modular.cms.vo.ProductVO>
     * @author: liubaihan
     * @date: 2022/9/16 14:54
     */
    public Page<ProductVO> getProductPageList(Integer pageNum, Integer pageSize, String searchText,String catalogId);

    /**
     * 通过产品ID 获取产品信息
     *
     * @param id: 产品ID
     * @return: vip.xiaonuo.modular.cms.vo.ArticleVO
     * @author: liubaihan
     * @date: 2022/10/14 15:26
     */
    public ProductVO getProductInfoById(String id);

/**************************************************************************** 页面接口 *****************************************************************/
    /**
     * 通过栏目ID获取页面信息
     *
     * @param id: 栏目ID
     * @return: vip.xiaonuo.modular.cms.vo.PageVO
     * @author: liubaihan
     * @date: 2022/9/16 17:33
     */
    public PageVO getPageInfoByCatalog(String id);

/**************************************************************************** 通知接口 *****************************************************************/

    List<Notice> getNoticeListByType(String type);

/**************************************************************************** 数据支持接口 *****************************************************************/
    String getUserNameByUserId(Long id);
}
